"""author: zsw
   data: 2021/11/29
   project: aaaaaaa我爱学习
"""
#111111111111
# import datetime
# n=input("请输入数字n：")
# n=int(n)
# def date_day_ago(n):
#     now_time=datetime.datetime.now()  #获取当前时间
#     offset=datetime.timedelta(days=-n)   #时间偏移量
#     day_ago=(now_time+offset).strftime("%Y-%m-%d")  #n天前的日期
#     return day_ago
# print(date_day_ago(n))

#22222222222
# import os
# path=input("请输入文件夹路径：")
# dirs=os.listdir(path)
# for i in dirs:
#     print(i)

#33333333333
# list1=input("请输入要排序的内容：")
# list1=list(set(list1))
# list1.sort()
# print(list1)

#44444444444
# a=1
# def test():
#     global a
#     a=2
#     print(a)
# print(test())

#555555555555
# 每个module都一个命名空间。在这个命名空间中的变量变化，会实时的到体现。
# 那有个办法就是：
# 1. Import配置文件时，不要from xxx import *, 而要import config.py
# 2. 在config.py文件中，用set_xxxValue()和get_xxxValue来提供外部访问接口，这个好处是，
# 可以让 全局变量在每次调用的时候都能得到刷新
# 3. 其他文件使用get_xxxValue()获取到全局变量的最新值。
#
# 另外，对于global这个声明，他只是在同一个文件中有效，并不能跨文件，就是跨module.
# 所以不要妄想通过global来控制不同文件间的 共享变量

#666666666666
#布尔类型、整型、浮点型、字符串、列表、元组、集合、字典等等

#777777777777
# import random
# print(random.randint(1,10))

# import numpy as np
# print(np.random.randn(1))

#888888888888
# 可变数据类型：list（列表）、dict（字典）、set（集合，不常用）
#
# 不可变数据类型：数值类型（int、float、bool）、string（字符串）、tuple（元组）

#999999999999
# +=:底层调用_iadd_()方法
# 对于不可变对象，进行+=操作后，在栈中重新创建了新对象
# 对于可变对象，进行+=操作后，不会在栈中重新创建新对象
# +:底层调用_add_()方法
# 对于不可变对象和可变对象，进行+操作后，都在栈中重新创建了新对象

#1010
# 1.每个 import 语句只导入一个模块，尽量避免一次导入多个模块
# 2.不要在行尾添加分号，也不要用分号将两条命令放在同一行
# 3.建议每行不超过 80 个字符，如果超过，建议使用小括号
# 将多行内容隐式的连接起来，而不推荐使用反斜杠 \ 进行连接。
# 4.使用必要的空行可以增加代码的可读性，通常在顶级定义
# （如函数或类的定义）之间空两行，而方法定义之间空一行，
# 另外在用于分隔某些功能的位置也可以空一行。
# 5.通常情况下，在运算符两侧、函数参数之间以及逗号两侧，都建议使用空格进行分隔。

#111111111111111
# str1=input("请输入一个字符串：")
# len_str=len(str1)
# for i in str1:
#     j=str1.count(i)
#     if j>1:
#         print(i)
#         break


#12121212
#浅拷贝:只是增加了一个指针指向已存在的内存地址，如果原内容发生变化，那么新复制的内容也跟着变化。
#深拷贝:是增加了一个指针并且申请了一个新的内存，使这个增加的指针指向这个新的内存，原内容变化不影响新复制的内容。
#深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体，而不是引用。

#14
#冒泡
# a=[1,5,3,6,8,9,4]
# len_a=len(a)
# for i in range(0,len_a):
#     is_change=False
#     for j in range(0,len_a-1):
#         if a[j]>a[j+1]:
#             a[j],a[j+1]=a[j+1],a[j]
#             is_change=True
#     if is_change==False:
#         break
# print(a)

#快速
# a=[1,5,3,6,8,9,4]
# len_a=len(a)
# for i in range(0,len_a-1):
#     for j in range(i+1,len_a):
#         if a[i]>a[j]:
#             a[i],a[j]=a[j],a[i]
# print(a)
#快速
# num=[1,5,3,6,8,9,4]
# def sort_quick(num,x,d):
#     if x>=d:
#         return num
#     low=x
#     high=d
#     base_num=num[x]
#     while x<d:
#          while x<d and num[d]>=base_num:
#                 d=d-1
#          num[x]=num[d]
#          while x<d and  num[x]<=base_num:
#                 x=x+1
#          num[d] = num[x]
#     num[d]=base_num
#     sort_quick(num,low,x-1)
#     sort_quick(num,x+1,high)
#     return num
# sort_quick(num,0,int(len(num)-1))
# print(num)

#15
# s1=input("请输入一个字符串：")
# if s1 == s1[::-1]:
#     print("这是回文")
# s2=list(s1)
# len_s1=len(s1)
# s3=[]
# i=len_s1-1
# while 1:
#     s3.append(s2[i])
#     if i==0:
#         break
#     else:
#         i=i-1
# if s3==s2:
#     print("是回文")
# else:
#     print("不是回文")